package com.mo.sys.service.imple;

import com.mo.common.exception.ServiceException;
import com.mo.sys.dao.SysNoticeDao;
import com.mo.sys.pojo.SysNotice;
import com.mo.sys.service.SysNoticeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;
/*
公告业务的具体实现
1.核心业务（调用数据层方法操作数据）
2.拓展业务（日志记录、权限控制、事务控制、缓存）
 */
@Slf4j
@Service
public class SysNoticeServiceImpl implements SysNoticeService {
  //创建日志门面API对象
  //常用日志规范SLF4J（Simple Logging Facade for Java）
  // ---两套具体实现logback和log4j
    // 日志等级：trace<debug<info<error

//    private static final Logger log=
          //通过工厂创建日志对象
 //         LoggerFactory.getLogger(SysNoticeServiceImpl.class);
    //has a
    //@Autowired //DI注入
    private SysNoticeDao sysNoticeDao;

    //通过构造方法直接进行DI操作
    //@Autowired 可省略
   public SysNoticeServiceImpl(SysNoticeDao sysNoticeDao){
       this.sysNoticeDao=sysNoticeDao;
   }

    @Override
    public List<SysNotice> findNotices(SysNotice sysNotice) {
      long t1=System.currentTimeMillis();
       log.info("method start{}",t1);//{}表示占位符，t1表示参数，拼接到{}
          List<SysNotice> list=sysNoticeDao.selectNotices(sysNotice);
        long t2=System.currentTimeMillis();
        log.info("method end{}",t2);
        return list;
    }

    @Override
    public SysNotice findById(long id) {
       SysNotice notice=sysNoticeDao.findById(id);
      if(notice==null)
          throw new ServiceException("记录可能已经不存在");
       return notice;
    }

    @Override
    public int saveNotice(SysNotice sysNotice) {
       int rows=sysNoticeDao.insertNotices(sysNotice);
       return rows;
    }

    @Override
    public int updateNotice(SysNotice sysNotice) {
       int rows=sysNoticeDao.updateNotices(sysNotice);
        return rows;
    }

    @Override
    public int deleteById(Long... id) {
       int rows=sysNoticeDao.deleteById(id);
       return rows;
    }
}
